import axios from 'axios'
import qs from 'qs'
import * as types from '@/vuex/types'
import store from '@/vuex/store'
import router from '@/router'
import Vue from 'vue';
import {Confirm, Alert, Toast, Notify, Loading} from 'vue-ydui/dist/lib.rem/dialog';


axios.defaults.timeout = 10000;                        //响应时间
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';           //配置请求头
axios.defaults.headers.get['Content-Type'] = 'application/json;charset=UTF-8';           //配置请求头
axios.defaults.baseURL = store.state.ip;   //配置接口地址
axios.interceptors.request.use((config) => {
  //在发送请求之前做某件事
  if (config.method === 'post') {
    config.data = qs.stringify(config.data);
  }
  if (store.state.token) {//token
    config.headers.Authorization = localStorage.userid + '_' + store.state.token;
  }
  return config;

}, (error) => {
  return Promise.reject(error);
});
//返回状态判断(添加响应拦截器)
axios.interceptors.response.use((res) => {
  //对响应数据做些事
  if (!res.status == 200) {
    // _.toast(res.data.msg);
    return Promise.reject(res);
  }
  return res;
}, (error) => {
  console.log(Alert)
  if (error && error.response) {
    switch (error.response.status) {
      case 401:
        // 401 清除token信息并跳转到登录页面
        Alert({mes: '登录过期，请重新登录'})
        store.commit(types.LOGOUT);
        router.replace({
          path: '/home',
          query: {redirect: router.currentRoute.fullPath}
        })
    }
  }
  return Promise.reject(error);
});

//返回一个Promise(发送post请求)
export function fetch(url, params) {
  return new Promise((resolve, reject) => {
    axios.post(url, params)
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err);
      })
      .catch((error) => {
        reject(error)
      })
  })
}

//返回一个Promise(发送get请求)
export function get(url, params) {
  return new Promise((resolve, reject) => {
    axios.get(url, {params: params})
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err);
      })
      .catch((error) => {
        reject(error)
      })
  })
}

//通过传递API调取接口
export function url(params) {
  return new Promise((resolve, reject) => {
    axios.get(params.url, {params: params.data})
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err);
      })
      .catch((error) => {
        reject(error)
      })
  })
}

export default {
  /**
   * 通过传递API调取接口
   */
  Url(params) {
    return url(params)
  },
  /**
   * 用户注册
   */
  Regist(params) {
    return fetch('/account/regist', params)
  },
  /**
   * 密码登录
   */
  Login(params) {
    return fetch('/account/login', params)
  },
  /**
   * 短信登录
   */
  msgLogin(params) {
    return fetch('/account/login/code', params)
  },
  /**
   * 游客登录
   */
  curstom(params) {
    return fetch('/visitor/login', params)
  },
  /**
   * 修改密码
   */
  pwdChange(params) {
    return fetch('/account/modifypass', params)
  },
    /**
     * 用户注册
     */
    Regist(params) {
      return fetch('/account/regist', params)
    },
    /**
     * 密码登录
     */
    Login(params) {
        return fetch('/account/login', params)
      },
    /**
     * 短信登录
     */
    msgLogin(params) {
        return fetch('/account/login/code', params)
      },
    /**
     * 游客登录
     */
    curstom(params){
        return fetch('/visitor/login',params)
    },
    /**
     * 修改密码
     */
    pwdChange(params){
        return fetch('/account/modifypass',params)
    },
    /**
     *
     *查找用户
     */
    searchFriend(params){
        return get('/friend/find',params)
    },
    /**
     * id查找用户
     */
     searchFriendbyId(params){
        return fetch('/user/basedata',params)
     },
     /**
     * 发送好友申请
     */
    apply(params){
        return fetch('/friend/apply',params)
    },
    /**
     * 查看申请列表
     */
    applyList(params){
        return get('/friend/applylist',params)
    },
    /**
     * 好友请求处理
     */
    handelApply(params){
        return fetch('/friend/handleapply',params)
    },
    /**
     * 好友列表
     */
    friendList(params){
        return get('/friend/myfriend',params)
    },
    /**
     * 新建好友分组
     */
    newfriendgroup(params){
        return fetch('/friend/newgroup',params)
    },
    /**查看自己建立分组
     *
     */
    showfriendgroup(params){
      return get('/friend/friendgroups',params)
    },
    /**
     * 查看加入分组
     */
    showfriendgroupWhole(params){
      return get('/friend/group/joined',params)
    },
    /**
     * 邀请未在分组人员
     */
    canjoin(params){
      return get('/friend/canjoinfriends',params)
    },
    /**
     * 分组地图
     */
    showgroupMap(params){
      return get('/gps/groupposition',params)
    },
    /**
     * 好友分组数据
     */
    showGroupNum(params){
      return  fetch('/friend/groupfriendcount',params)
    },
    /**
     * 好友分组详情
     */
    showGroupDetail(params){
      return fetch('/friend/listfriendgroup',params)
    },
    /**
     * 邀请好友进入分组
     */
    Invitation(params){
      return fetch('/friend/addgroupfriends',params)
    },
    /**
     * 申请关注
     */
    focusApply(params){
      return fetch('/attention/apply',params)
    },
    /**
     * 查看关注申请列表
     */
    showfocusApply(params){
      return get('/attention/applylist',params)
    },
    /**
     * 处理关注请求
     */
    handleFocusApply(params){
      return fetch('/attention/handleapply',params)
    },
    /**
     * 查看已关注的人
     */
    showMyFocus(params){
      return get('/attention/myattention',params)
    },
    /**
     * 新建关注分组
     */
    newFocusGroup(params){
      return fetch('/attention/newgroup',params)
    },
    /**
     * 查看关注分组
     */
    showFocusGroup(params){
      return get('/attention/groupattentcount',params)
    },
    showWhoFocusMe(params){
      return get("/attention/WhoAttentionMe",params)
    },
    /**
     * 添加用户进关注分组
     */
    addToFocusList(params){
      return fetch('/attention/addgroupattentions',params)
    },
    /**
     * 查看未在分组内的关注人员
     */
    canjoinFocus(params){
      return get('/attention/canjoinattentions',params)
    },
    /**
     * 查看分组内成员
     */
    showGroupMember(params){
      return fetch('/attention/listattentiongroup',params)
    },
    /**
     * 关注组内地图相关
     */
    focusGroupMap(params){
      return get('/gps/attentionGroupPosition',params)
    },
     /**
     * 发送位置
     */
    sendPoi(params){
        return fetch('/gps/selfposition',params)
    },
    /**
     * 修改电子栅栏
     */
    changeCircle(params){
        return fetch('/attention/update/geofence',params)
    },
      /**
     * 修改电子栅栏
     */
    setCircle(params){
      return fetch('/attention/set/geofence',params)
    },  
    /**
     * 查看是否出电子栅栏
     */
    ifOut(params){
      return get("/gps/check/geofence",params)
    },
    /**
     * 创建有约
     */
    newAppoint(params){
      return fetch("/appoint/create/appoint",params)
    },
    /**
     * 发起有约申请
     */
    createApplication(params){
      return fetch("/appoint/create/applys",params)
    },
    /**
     * 查看我的有约申请
     */
    getMyApplys(params){
      return get("/appoint/myApplys",params)
    },
    /**
     * 处理有约申请
     */
    handleAppointapply(params){
      return fetch("/appoint/handleApply",params)
    },
    /**
     * 设置群里gps开启关闭
     */
    setappGps(params){
      return fetch("/appoint/setGPS",params)
    },
    /**
     * 查看自己的有约
     */
    getJoinedAppoints(params){
      return get("/appoint/joinedAppoints",params)
    },
    /**
     * 查看有约信息
     */
    getAppointMembers(params){
      return get("/appoint/members",params)
    },
    /**
     * 有约好友邀请
     */
    noAppointFriend(params){
      return get("/appoint/notJoinFriend",params)
    },
    /**
     * 有约关注邀请
     */
    noAppointFocus(params){
      return get("/appoint/notJoinAttention",params)
    },
    /**
     * 有约地图
     */
    appointMap(params){
      return get("/gps/appoint",params)
    },
    /**
     * 查看自己位置
     */
    showPoi(params){
        return fetch('/gps/mypresentgps',params)
    },
    /**
     * 开启权限
     */
    Jurisdiction(params){
      return fetch("/permissionOpen/add",params)
    },
    /**
     * 关闭权限
     */
    closeJurisdiction(params){
      return fetch("/permissionOpen/cancel",params)
    },
    /**
     * 查看单个关注好友
     */
    shwoSigfocus(params){
      return get("/attention/sigattention",params)
    },
    /**
     * 权限查看
     */
    showJurisdiction(params){
      return get("/permissionOpen/sigList",params)
    },
    /**
   * 附近信息
   */
  around(params) {
    return fetch('/hi/around', params)
  },
  /**
   * 打招呼
   */
  sayhi(params) {
    return fetch('/hi/sayhi', params)
  },
  /**
   * 群聊
   */
  checkhi(params) {
    return fetch('/hi/checkhi', params)
  },
  /**
   * 查询单条语音
   */
  audio(params){
    return fetch('chat/accesschat',params)
  },
  /**
   * 获取周边动态 参数：lan 纬度 ，lng 经度，radius 半径 公里，page 第几页， size 多少条
   */
  bypoint(params) {
    return get('/dynamics/dynamicslistbypoint', params)
  },
  /**
   * 动态内容  动态类型：Text普通动态 ， Gallery 纯图片动态 ， Gallery
   * */
  dynamicsText(params) {
    return get('/dynamicstext/text', params)
  },
  /**
   * 获取用户动态栏目
   */
  titles(params) {
    return get('/dynamics/titles')
  },
  /**
   * 获取视频动态详情 参数:资源ID id
   */
  video(params){
    return get('/dynamicsvideo/video',params)
  },
  /**
   *作者回复评论 参数：用户ID userID, 回复内容 replyDetail,被回复ID commentInfoID
   */
  commentReply(params){
    return fetch('comment/reply',params)
  },
  /**
   *查询评论回复 参数：评论ID commentid, 回复第几页 page,每页条数 size
   */
  commentReplys(params){
    return get('comment/replylist',params)
  },
  /**
   * 获取评论列表 参数: 资源ID resourceID, 第几页 page,每页条数 size
   */
  commentList(params){
    return get('comment/commentlist',params)
  },
  /**
   * 提交文章评论 需要参数：用户ID userID，资源ID resourceID ,资源类型  resourceType, 评论内容 detail
   * */
  commentText(params){
    return fetch('/comment/publish',params)
  },
  /**
   * 动态点赞 参数：用户ID userID，资源ID resourceID ,资源类型  resourceType，点赞确认 inPosirive
   * */
  dynamicLike(params){
    return fetch('/likeinfo/like',params)
  },
  /**
   * 查询评论点赞数
   */
  commentlike(params){
    return get('/comment/commentlike',params)
  },

/**
 * 我的商业投送卡  参数:userID
 */
myCards(params){
  return get('/card/myCards',params)
},
/**
 * 周边的商业投送  参数:lat,lng
 */
aroundCards(params){
  return get('/card/aroundCards',params)
},
  /**
   * 添加描述   参数:cardContentList
   */
  cardContentList(params){
    return fetch('/card/add/contents',params)
  }

}
